package com.ruoyi.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 公告管理对象 announcement
 * 
 * @author ruoyi
 * @date 2025-05-29
 */
public class Announcement extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 公告ID，主键 */
    private Long id;

    /** 公告标题 */
    @Excel(name = "公告标题")
    private String title;

    /** 公告分类，如：通知、公告、新闻等 */
    @Excel(name = "公告分类，如：通知、公告、新闻等")
    private String category;

    /** 发布人ID，关联员工表 */
    private Long publisherId;

    /** 公告范围：全公司/部门/个人 */
    @Excel(name = "公告范围：全公司/部门/个人")
    private String scope;

    /** 公告状态：草稿/已发布/已归档 */
    @Excel(name = "公告状态：草稿/已发布/已归档")
    private String status;

    /** 已读数量 */
    @Excel(name = "已读数量")
    private Long readCount;

    /** 未读数量 */
    @Excel(name = "未读数量")
    private Long unreadCount;

    /** 发布时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "发布时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date publishTime;

    /** 公告内容 */
    @Excel(name = "公告内容")
    private String content;

    /** 删除标志（0代表存在 2代表删除） */
    private Long delFlag;

    /** 记录创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "记录创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 记录最后更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "记录最后更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setTitle(String title) 
    {
        this.title = title;
    }

    public String getTitle() 
    {
        return title;
    }

    public void setCategory(String category) 
    {
        this.category = category;
    }

    public String getCategory() 
    {
        return category;
    }

    public void setPublisherId(Long publisherId) 
    {
        this.publisherId = publisherId;
    }

    public Long getPublisherId() 
    {
        return publisherId;
    }

    public void setScope(String scope) 
    {
        this.scope = scope;
    }

    public String getScope() 
    {
        return scope;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setReadCount(Long readCount) 
    {
        this.readCount = readCount;
    }

    public Long getReadCount() 
    {
        return readCount;
    }

    public void setUnreadCount(Long unreadCount) 
    {
        this.unreadCount = unreadCount;
    }

    public Long getUnreadCount() 
    {
        return unreadCount;
    }

    public void setPublishTime(Date publishTime) 
    {
        this.publishTime = publishTime;
    }

    public Date getPublishTime() 
    {
        return publishTime;
    }

    public void setContent(String content) 
    {
        this.content = content;
    }

    public String getContent() 
    {
        return content;
    }

    public void setDelFlag(Long delFlag) 
    {
        this.delFlag = delFlag;
    }

    public Long getDelFlag() 
    {
        return delFlag;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("title", getTitle())
            .append("category", getCategory())
            .append("publisherId", getPublisherId())
            .append("scope", getScope())
            .append("status", getStatus())
            .append("readCount", getReadCount())
            .append("unreadCount", getUnreadCount())
            .append("publishTime", getPublishTime())
            .append("content", getContent())
            .append("delFlag", getDelFlag())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .toString();
    }
}
